﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace ProyectoFinal.Alquileres
{
    public partial class alquilarVehiculo : System.Web.UI.Page
    {
        protected DataTable Autos;
        ServiceAlquileres.WebServiceAlquileresSoapClient objWsAlquileres = new ServiceAlquileres.WebServiceAlquileresSoapClient();
        ServiceClientes.webServiceClientesSoapClient objWsClientes = new ServiceClientes.webServiceClientesSoapClient();
      ServiceAutos.webServiceAutoSoapClient objWsAutos = new ServiceAutos.webServiceAutoSoapClient();
        
        #region Eventos

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                this.Crear_Estructura();
                this.cargaListaAutosGrid();
                this.cargarListaClientes();
            }
        }

        protected void dd_Cliente_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void dd_Auto_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void btn_guardar_Click(object sender, EventArgs e)
        {

        }

        protected void btn_guardar_Auto_Click(object sender, EventArgs e)
        {

        }

        protected void gvAutos_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            
            gvAutos.EditIndex = -1;
            Autos = (DataTable)Session["Autos"];

            int cont = gvAutos.Rows.Count;
            if (cont > 1)
            {
             
                Session["List"] = Autos;
            }
            //this.Cargar_Lista();
        }

        protected void gvAutos_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName.Equals("Insert"))
            {
                if (Page.IsValid)
                {


                    Autos = (DataTable)Session["Autos"];

                  

                    DropDownList dd_Auto = (DropDownList)gvAutos.FooterRow.FindControl("dd_Auto");
                    TextBox txt_cantidad_edit = (TextBox)gvAutos.FooterRow.FindControl("txt_cantidad");
                    TextBox txt_total_Auto_edit = (TextBox)gvAutos.FooterRow.FindControl("txt_total_Auto");
                    TextBox txt_extras_edit = (TextBox)gvAutos.FooterRow.FindControl("txt_extras");
                    TextBox txt_poliza = (TextBox)gvAutos.FooterRow.FindControl("txt_poliza");


                    DataRow row = Autos.NewRow();
                 
                    row["Cantidad"] = txt_cantidad_edit.Text;
                    row["Total_Auto"] = txt_total_Auto_edit.Text;
                    row["Extras"] = txt_extras_edit.Text;
                    row["Poliza_Seguro"] = txt_extras_edit.Text;
                    row["Codigo_Auto"] = dd_Auto.SelectedValue;
                    row["Auto"] = dd_Auto.SelectedItem.Text;
                    Autos.Rows.Add(row);

                    Session["Autos"] = Autos;
                     this.cargaListaAutosGrid();
                }
            }
        

            
        }

        protected void gvAutos_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {


            Autos = (DataTable)Session["List"];

            for (int i = 0; i < Autos.Rows.Count; i++)
            {
                if (Autos.Rows[i]["ID"].ToString() == gvAutos.DataKeys[e.RowIndex].Value.ToString())
                {
                  //  OBJLista.Id_ListaD = int.Parse(Autos.Rows[i]["ID"].ToString());
                   // OBJLista.Id_Lista = Autos.Rows[i]["Id_Lista"].ToString();
                   // if (OBJLista.Eliminar_DetLista())
                   // {
                      
                  //  }
                    Autos.Rows.RemoveAt(i);
                }
            }


            Session["Autos"] = Autos;

            //this.Cargar_Lista();
        }

        protected void gvAutos_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.Footer)
            {
                DataSet ds = objWsAlquileres.devolverListaAutosDisponibles();
                DropDownList dd_Auto = (DropDownList)e.Row.FindControl("dd_Auto");

                dd_Auto.Items.Add("");
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {

                    ListItem item = new ListItem();
                    item.Value = ds.Tables[0].Rows[i]["Codigo_Auto"].ToString();
                    item.Text = ds.Tables[0].Rows[i]["Auto"].ToString();


                    dd_Auto.Items.Add(item);
                    dd_Auto.DataBind();
                }
            }
        }

        protected void gvAutos_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {

            DropDownList dd_Auto_Edit = (DropDownList)gvAutos.Rows[e.RowIndex].FindControl("dd_Auto_Edit");
            TextBox txt_cantidad_edit = (TextBox)gvAutos.Rows[e.RowIndex].FindControl("txt_cantidad_edit");
            TextBox txt_total_Auto_edit = (TextBox)gvAutos.Rows[e.RowIndex].FindControl("txt_total_Auto_edit");
            TextBox txt_extras_edit = (TextBox)gvAutos.Rows[e.RowIndex].FindControl("txt_extras_edit");

            Autos = (DataTable)Session["Autos"];
            
            for (int i = 0; i < Autos.Rows.Count; i++)
            {
                if (Autos.Rows[i]["Codigo_Auto"].ToString() == gvAutos.DataKeys[e.RowIndex].Value.ToString())
                {
                    Autos.Rows[i]["Auto"] = dd_Auto_Edit.SelectedItem.Text;
                    Autos.Rows[i]["Cantidad"] = txt_cantidad_edit.Text;
                    Autos.Rows[i]["Total_Auto"] = txt_total_Auto_edit.Text;
                    Autos.Rows[i]["Extras"] = txt_extras_edit.Text;

                }
            }

            gvAutos.EditIndex = -1;
            Session["Autos"] = Autos;
            //this.Cargar_Lista();
        }

        protected void gvAutos_RowEditing(object sender, GridViewEditEventArgs e)
        {
            
            gvAutos.EditIndex = e.NewEditIndex;
            Autos = (DataTable)Session["Autos"];
           
            //this.Cargar_Lista();
        }

        #endregion



        #region Metodos
        private void insertarAutos()
        {
            try
            {
                string estado = "";
               
                decimal totalCancelar = Convert.ToDecimal(txt_total.Text);
                decimal subTotal=0 ;
                decimal impuesto =0;
                 Autos = (DataTable)Session["Autos"];
                int codigoCliente = Convert.ToInt32(dd_Cliente.SelectedValue);
                DateTime fechaObtencion = Convert.ToDateTime(txt_Fecha_Obtencion.Text, CultureInfo.InvariantCulture.DateTimeFormat);
                DateTime fechaEntrega = Convert.ToDateTime(txt_Entrega.Text, CultureInfo.InvariantCulture.DateTimeFormat);
                estado=objWsAlquileres.insertarAlquileres(codigoCliente, fechaObtencion, fechaEntrega, totalCancelar,
                    subTotal, impuesto, Autos);
           
                if (estado == "Error")
                {
                    //aqui pueden tirar un msj error si sucediera
                }
                else if (estado == "Insertado")
                {
                    //aqui pueden tirar un msj dependiendo de lo que devuelva el estado en este caso el el
                    //caso exitoso, seria cuando hace insert.
                   
                }


            }
            catch (Exception ex)
            {

            }
        }

        protected void Crear_Estructura()
        {

            try
            {

                Autos = new DataTable();
                Autos.Columns.Add("Codigo_Auto");
                Autos.Columns.Add("Auto");
                Autos.Columns.Add("Cantidad");
                Autos.Columns.Add("Total_Auto");
                Autos.Columns.Add("Poliza_Seguro");
                Autos.Columns.Add("Extras");
                Session["Autos"] = Autos;
            }
            catch (Exception ex)
            {
               

            }

        }
        private void cargarListaClientes()
        {
            //devuelve lista completa para mostrar registros
            DataSet ds = objWsClientes.devolverClientes();

            dd_Cliente.Items.Add("");
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                ListItem item = new ListItem();
                item.Value = ds.Tables[0].Rows[i]["Codigo_Cliente"].ToString();
                item.Text = ds.Tables[0].Rows[i]["Nombre"].ToString() + " " + ds.Tables[0].Rows[i]["Apellido1"].ToString();

                dd_Cliente.Items.Add(item);
                dd_Cliente.DataBind();
            }
        }
        protected void cargaListaAutosGrid()
        {
            try
            {

                Autos = (DataTable)Session["Autos"];


                if (Autos.Rows.Count > 0)
                {

                    
                   // Autos.Rows.Add(Autos.NewRow());
                    gvAutos.DataSource = Autos;
                    gvAutos.DataBind();
                    int cont = gvAutos.Rows.Count;
               
                    int TotalColumns = gvAutos.Rows[cont].Cells.Count;


                    //GV_Respuestas.Rows[0].Cells.Clear();
                    gvAutos.Rows[cont].Cells.Add(new TableCell());
                    gvAutos.Rows[cont].Cells[0].Visible = true;
                    gvAutos.Rows[cont].Cells[1].Visible = false;
                    gvAutos.Rows[cont].Cells[2].Visible = false;
                    gvAutos.Rows[cont].Cells[3].Visible = false;
                    gvAutos.Rows[cont].Cells[4].Visible = false;
                    gvAutos.Rows[cont].Cells[5].Visible = false;
                    gvAutos.Rows[cont].Cells[6].Visible = false;
               

                    gvAutos.Rows[cont].Cells[0].ColumnSpan = TotalColumns;
                    gvAutos.Rows[cont].Cells[0].Text = "<tr><td colspan=\"15\" width=\"626px\" class=\"bd_general\" height=\"10\"></td></tr>";




                    gvAutos.FooterRow.Enabled = true;
                    gvAutos.FooterRow.Cells[5].Visible = false;
                    gvAutos.FooterRow.Cells[6].ColumnSpan = 2;


                    

                }
                else
                {
                    DataTable dt = new DataTable();

                    dt.Columns.Add("Codigo_Auto");
                    dt.Columns.Add("Auto");
                    dt.Columns.Add("Cantidad");
                    dt.Columns.Add("Carrier");
                    dt.Columns.Add("Poliza_Seguro");
                    dt.Columns.Add("Total_Auto");

                    dt.Columns.Add("Extras");

                    dt.Rows.Add(dt.NewRow());
                    gvAutos.DataSource = dt;
                    gvAutos.DataBind();

                    int TotalColumns = gvAutos.Rows[0].Cells.Count;
                    //GV_Respuestas.Rows[0].Cells.Clear();
                    gvAutos.Rows[0].Cells.Add(new TableCell());
                    gvAutos.Rows[0].Cells[0].Visible = false;
                    gvAutos.Rows[0].Cells[1].Visible = false;
                    gvAutos.Rows[0].Cells[2].Visible = false;
                    gvAutos.Rows[0].Cells[3].Visible = false;
                    gvAutos.Rows[0].Cells[4].Visible = false;
                    gvAutos.Rows[0].Cells[5].Visible = false;
                    gvAutos.Rows[0].Cells[6].Visible = false;
                    

                    gvAutos.FooterRow.Enabled = true;
                    gvAutos.Rows[0].Cells[0].ColumnSpan = TotalColumns;
                    gvAutos.Rows[0].Cells[0].Text = "";




                }

            }
            catch (Exception ex)
            {
                

            }
        }

       
     
        #endregion
    }
}